混合算法: Actor-Critic, A2C, A3C, DDPG, SAC
Actor-Critic用了一个很奇妙的设计把Policy Gradient和Value Function结合在一起, 从而衍生出了一系列算法如A2C, A3C, DDPG, SAC等. 这些算法在实践中表现出了很好的性能, 也是目前最流行的强化学习算法之一.
我们先前在讲Policy Gradient时提到过
- Policy Gradient的优势在于可以直接优化策略, 而不需要像Q-Learning那样需要一个价值函数来辅助. 但是, Policy Gradient也有一个很大的缺点, 就是它的样本效率很低, 通常需要大量的样本来训练. 这是因为Policy Gradient是基于蒙特卡洛采样的, 每次更新都需要采样一条完整的轨迹, 这样的样本利用率很低. 而且, 由于Policy Gradient是基于梯度的, 它的更新是不稳定的, 容易出现不收敛的情况.
- MC的引入只是为了去估计, 我们可不可以再用一个神经网络去拟合呢? 答案是可以的, 这就是我们要讲的Actor-Critic算法.
Actor-Critic
定义两个神经网络:
Policy Network: , 用来输出动作的概率分布. 称为Actor
Value Network: , 用来输出价值. 称为Critic
那我们如何使用采样更新这个网络呢?
我们联想到TD算法,可以自举的更新价值函数,我们可以用TD Error来更新Value Network,即:
这里Value Network可以用V,也可以用Q,用V不需要计算
这会让我们的Value Network逐渐趋向收敛, Critic越来越知道如何评判动作
然后用policy gradient更新
Actor的目标是最大化Advantage Function
Critic的目标是最小化TD Error
其算法流程如下:
- Observe采样, 得到
- 用当前网络假想一个
- 计算TD Error:
- 更新Critic:
- 更新Actor: 这里用而不是Q就相当于用了baseline优化
当然, 之前的优化机制全可以在这里用:
- Critic的经验回放, n-steps, 优先级经验回放, Double DQN, Dueling DQN, noise以及全部合起来的Rainbow模型等
- Actor的策略梯度的优化, baseline, PPO, TRPO, DDPG等
Actor-Critic实质上不是一个模型, 而是一种框架
例如以上的优化机制之中,只要使用baseline就是A2C,把整个框架分布式异步化就是A3C, 把Critic使用DQN的变体, 用神经网络表示策略(还是为了解决连续动作的问题)+ Double DQN + 软更新()+ 使用高斯噪声而不是-greedy就是DDPG
在AC这样的多模型架构中, state部分可以共享抽特征的层
之前的章节提到过在线策略算法的采样效率比较低,我们通常更倾向于使用离线策略算法。然而,虽然 DDPG 是离线策略算法,但是它的训练非常不稳定,收敛性较差,对超参数比较敏感,也难以适应不同的复杂环境。2018 年,一个更加稳定的离线策略算法 Soft Actor-Critic(SAC)被提出。SAC 的前身是 Soft Q-learning,它们都属于最大熵强化学习的范畴。Soft Q-learning 不存在一个显式的策略函数,而是使用一个函数的波尔兹曼分布,在连续空间下求解非常麻烦。于是 SAC 提出使用一个 Actor 表示策略函数,从而解决这个问题。目前,在无模型的强化学习算法中,SAC 是一个非常高效的算法,它学习一个随机性策略,在不少标准环境中取得了领先的成绩。
AC之中,修改V加上一个熵,使得策略更加随机,从而更容易探索到更多的状态
对应修改的奖励为,再加上前面那些优化,就是SAC